﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Recursos.Model;


namespace Recursos.View
{
    public partial class PersonalViewModify : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var userSecurity = ((Usuario)Session["UserLogged"]);
            if (userSecurity == null)
                Response.Redirect("~/NoAccess.aspx");
            var permisos = new PermisosModel();
            if (!Page.IsPostBack && userSecurity != null && permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador") )
                BindData();

            else if (userSecurity == null || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Operador") || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Profesor") || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Coordinador"))
            {
                Response.Redirect("~/NoAccess.aspx");
            }

        }
        public void BindData()
        {
            var usuario = new UsuarioModel();
            //var usuarios = usuario.CargarUsuarioModificar();
            GridView1.DataSource = usuario.CargarUsuarioModificar(); 
            GridView1.DataBind();
            
        }

        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            var t = e.Row.RowType;

            if (t == DataControlRowType.DataRow)
            {
                if (this.GridView1.EditIndex >= 0 && e.Row.RowIndex == this.GridView1.EditIndex)
                {
                    var d1 = e.Row.FindControl("DropdownCarrera") as DropDownList;
                    var em1 = e.Row.DataItem as Carrera;
                    var carrera = new CarrerasModel();
                    d1.DataSource = carrera.CargarCarreras();
                    d1.DataBind();
                    d1.SelectedValue = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();

                    var d2 = e.Row.FindControl("DropdownPuesto") as DropDownList;
                    var em2 = e.Row.DataItem as Puesto;
                    var puesto = new PuestoModel();
                    d2.DataSource = puesto.CargarPuestos();
                    d2.DataBind();
                    d2.SelectedValue = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();

                    var d3 = e.Row.FindControl("DropdownRol") as DropDownList;
                    var em3 = e.Row.DataItem as Rol;
                    var rol = new RolModel();
                    d3.DataSource = rol.CargarRoles();
                    d3.DataBind();
                    d3.SelectedValue = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
                }
            }
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BindData();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex];
            var usuariomodelo = new UsuarioModel();
            var usuarioId = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            var txtncedula = (TextBox)row.FindControl("cedula");
            var txtcarne = (TextBox)row.FindControl("carne");
            var txtusuario = (TextBox)row.FindControl("usuario");

            var dplpuesto = (DropDownList)row.FindControl("DropdownPuesto");



            try 
            {
                var datacontext = new DataClassesRecursosDataContext();
                var roles = new Repository<RolXUsuario>(datacontext);
                var usuarioid = roles.GetById(usuarioId);
               int id = usuariomodelo.ComprobarUsuarioActualizar(int.Parse(txtncedula.Text), usuarioId, txtusuario.Text, dplpuesto.SelectedItem.Text.Equals("Estudiante"));

                if (id == usuarioid.Usuario.id)
                {   
                    var dplcarrera = (DropDownList)row.FindControl("DropdownCarrera");
                    var dplrol = (DropDownList)row.FindControl("DropdownRol");
                    var txtnombre = (TextBox)row.FindControl("nombre");
                    var txtcorreo = (TextBox)row.FindControl("correo");
                    var txtcontraseña = (TextBox)row.FindControl("contraseña");
                    

                    var usuario = new UsuarioModel();

                 //   usuario.ActualizarUsuario(txtnombre.Text, int.Parse(txtncedula.Text), int.Parse(txtcarne.Text), int.Parse(dplpuesto.SelectedValue), int.Parse(dplcarrera.SelectedValue), txtcontraseña.Text, txtcorreo.Text, txtusuario.Text, usuarioid.Usuario.id, int.Parse(dplrol.SelectedValue));
                 

                    usuario.ActualizarUsuario(txtnombre.Text, int.Parse(txtncedula.Text), int.Parse(dplpuesto.SelectedValue), int.Parse(dplcarrera.SelectedValue), txtcontraseña.Text, txtcorreo.Text, txtusuario.Text, usuarioid.Usuario.id, int.Parse(dplrol.SelectedValue));
                    WebMsgBox.Show("Usuario "+txtncedula.Text+" editado correctamente", "Modificación de Personal");

                    GridView1.EditIndex = -1;
                    BindData();
                }
                else
                    WebMsgBox.Show("El usuario "+txtncedula.Text+" esta duplicado.No se realizo la actualización", "Modificación de Personal");
            }
            catch (Exception)
            {
                WebMsgBox.Show("El usuario " + txtncedula.Text + " esta duplicado.No se realizo la actualización", "Modificación de Personal");
            
              
            }
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            e.Cancel = true;
            GridView1.EditIndex = -1;
            BindData();
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            var datacontext = new DataClassesRecursosDataContext();
            GridViewRow row = GridView1.Rows[e.RowIndex];
            var usuarioId = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            var usuario = new UsuarioModel();
            var roles = new Repository<RolXUsuario>(datacontext);
            var usuarioid = roles.GetById(usuarioId);
            var efectuado=usuario.ElimianrUsuario(usuarioid.Usuario.id);
            GridView1.EditIndex = -1;
            BindData();
            if (efectuado == 1)
                WebMsgBox.Show("Usuario "+ usuarioid.Usuario.Cedula.ToString()+" eliminado correctamente", "Eliminar Personal");
            else
                WebMsgBox.Show("El usuario "+ usuarioid.Usuario.Cedula.ToString()+" cuenta con reservaciones. No se realizo la eliminación", "Eliminar Personal");
            
        }

    }
}